/** 
 *  @file
 *  @brief   梁标准截面属性使用数值方法计算接口
 *  @author  duweixing
 *  @date    2024.07.10
 *  @version v1.0
 *  @par Copyright(c):  ShenGong  Simulation corporation
 */

#pragma once
#include <memory>
#include "DataStructure/Common/SGNamespace.h"
#include "DataStructure/Input/Property/PBARLData.h"
#include "../SectionCalculator/SectionMesh.h"

SG_NAMESPACE_OPEN
namespace FEMSolver {
namespace Element {

/** \class IBeamSectionNumericalCalculator
 *  采用数值方法计算标准截面属性的基类
 */
class IBeamSectionNumericalCalculator
{
public:
    virtual ~IBeamSectionNumericalCalculator () = default;
    virtual void Mesh(const SG::DataStructure::FEM::PBARLData& section, _OUT Meshes& meshes, int refineLevel = 0) const = 0;
};

using BeamSectionNumericalCalculatorSP = std::shared_ptr<IBeamSectionNumericalCalculator>;

}; // end namespace Element
}; // end namespace FEMSolver
SG_NAMESPACE_CLOSE